package com.td.filemanager.utils;

import com.td.filemanager.ResourceTable;
import ohos.agp.components.AttrSet;
import ohos.agp.components.element.Element;
import ohos.agp.components.element.PixelMapElement;
import ohos.agp.utils.Color;
import ohos.app.Context;
import ohos.global.resource.NotExistException;

import java.io.IOException;

/**
 * AttrSetUtil
 *
 * @since 2021/09/29
 */
public class AttrSetUtil {
    private AttrSetUtil() {
    }

    /**
     * @param attrSet      资源组
     * @param key          关键字
     * @param defaultValue 默认值
     * @return 字符串
     */
    public static String getStringValue(AttrSet attrSet, String key, String defaultValue) {
        if (attrSet.getAttr(key).isPresent()) {
            return attrSet.getAttr(key).get().getStringValue();
        }
        return defaultValue;
    }

    /**
     * @param attrSet      资源组
     * @param key          关键字
     * @param defaultValue 默认值
     * @return 颜色
     */
    public static Color getColorValue(AttrSet attrSet, String key, String defaultValue) {
        if (attrSet.getAttr(key).isPresent()) {
            return attrSet.getAttr(key).get().getColorValue();
        }
        return new Color(Color.getIntColor(defaultValue));
    }

    /**
     * @param attrSet      资源组
     * @param key          关键字
     * @param defaultValue 默认值
     * @return 度量单位
     */
    public static int getDimensionValue(AttrSet attrSet, String key, int defaultValue) {
        if (attrSet.getAttr(key).isPresent()) {
            return attrSet.getAttr(key).get().getDimensionValue();
        }
        return defaultValue;
    }

    /**
     * @param attrSet      资源组
     * @param key          关键字
     * @param defaultValue 默认值
     * @return 布尔量
     */
    public static boolean getBooleanValue(AttrSet attrSet, String key, boolean defaultValue) {
        if (attrSet.getAttr(key).isPresent()) {
            return attrSet.getAttr(key).get().getBoolValue();
        }
        return defaultValue;
    }

    /**
     * @param attrSet      资源组
     * @param key          关键字
     * @param defaultValue 默认值
     * @return 图片
     */
    public static Element getElement(AttrSet attrSet, String key, Element defaultValue) {
        if (attrSet.getAttr(key).isPresent()) {
            Element element = attrSet.getAttr(key).get().getElement();
            if (element != null) {
                return element;
            }
        }
        return defaultValue;
    }

    /**
     * 获取默认图
     *
     * @param context 上下文
     * @return 默认图
     */
    public static Element getImageDef(Context context) {
        try {
            return new PixelMapElement(context.getResourceManager()
                    .getResource(ResourceTable.Media_icon_back));
        } catch (IOException | NotExistException e) {
            e.printStackTrace();
        }
        return null;
    }
}
